0引言 随着软件开发技术的发展和软件工程概念的引入,计算机软件的开发已经从原来简单的程序实现发展到现在的系统性项目开发。而软件项目的开发按照软件工程的思想应该包括需求分析、概要设计、详细设计、编码实现、测试和维护这几个阶段。因此,现在的软件开发是个多目标、多任务的系统工程。 同时,基于微软的.NET开发环境进行软件开发涉及到多方面的技术,包括软件工程、页面技术、数据库技术、面向对象编程等。 要让学生能够运用多种技术进行系统性地软件开发,传统的"理论+实验"教学模式已经不能满足教学需求。这里提出采用一种高效的、更系统化的、可实现多任务集成的教学方法--"项目驱动"教学法,运用到.NET相关课程和实训教学中。 下面就"项目驱动"教学法的概念、可行性和具体实施方法作详细介绍。 1"项目驱动"教学法概述 "项目驱动"教学法包括两层含义,即"项目导向"和"任务驱动"。更具体的内涵是项目需求引领下的多目标多任务驱动教学法。"项目导向,任务驱动"是2003年7月德国联邦职教所制定的以行动为导向的一种教学形式,最早见于美国教育家凯兹和加拿大教育家查德合著的《项目教学》一书。[1] "项目驱动"是一种建立在瑞士心理学家J.Piaget提出的建构主义理论基础上的教学方法。建构主义学习理论认为,学习是总结个人经验而不断重构个人的理解和知识的过程。将认知的重组看作是完成学习过程中的要素。这种认知的建构观点把注意力集中于个人的同时,并不否认社会性交互作用的重要性。[2]基于这样的理论,"项目驱动"教学法以项目目标作为指引,以学生为教学主体,教师及教学环境设置为学生建构自己的知识体系服务。 与传统的教学方法相比,"项目驱动"教学法能更好地激发学生的学习兴趣和求知欲望,充分调动学生的学习积极性和主动性,从而培养学生自主学习、分析问题、解决问题的能力和协作、创新、探索的精神。 2采用"项目驱动"教学法的可行性 因为"项目驱动"教学法仅仅将教师授课等传统的"自上而下"教学法作为辅助,故该方法一般只适合于注重实践的综合性课程,而像离散数学、算法分析、数据库原理等基础理论性课程并不适合采用。所以有必要在运用"项目驱动"教学法之前分析一下该方法在特定课程中的可行性。 首先,从.NET相关课程的特点看。.NET开发所涉及到的课程主要有面向对象程序设计、ADO.NET、ASP.NET、数据库应用开发等。这些课程都比较注重实践和发挥学生的主观能动性,所涉及到的理论知识部分大多是分散的浅层知识点,不一定需要教师系统地讲授,学生可以通过多种方式的自主性学习而获得。这些课程特征刚好与"项目驱动"教学法相吻合。 其次,从学生已有知识结构层面看。一般高校都将.NET开发相关课程安排在大二之后,在这个时间点,学生应该已经系统地学习过离散数学、数据结构、高级程序设计语言和数据库原理,而这些专业基础课程刚好是学习.NET开发不可或缺的知识。当然,这一点需要高校在制定相关专业培养计划的时候有一个明确的先修课程规定。 最后,从教师素质角度来看。运用"项目驱动"教学法要求以学生为教学主体,但并不意味着教师在整个教学环境中的作用降低了,恰恰相反,"项目驱动"教学法对教师的要求更高。其不但要求教师要掌握.NET开发所涉及到所有课程内容,还要求教师能融会贯通这些课程知识并指导学生正确运用到项目中。甚至,有高校在给学生做企业化的相关实训指导的时候,要求教师掌握一定的企业开发流程和规范。 3"项目驱动"教学法的实施步骤 "项目驱动"教学法以学生为教学主体,以项目需求为最终教学目标。根据这个原则这里设计了下面的具体实施步骤,并且已经运用在本人指导的暑期技能实训中。 3.1明确项目需求 包括用户需求和技术需求。其中,用户需求是软件工程技术领域的问题,这里主要明确技术需求。如在.NET开发项目中,主要涉及到C#语言、ASP.NET、ADO.NET等技术。这部分工作主要由教师在课程开始前完成。 3.2知识准备 在明确了项目需要的技术之后,下面应该根据学生已有的知识结构安排需要补充的技术知识。 在这个过程中,教师是学生在开发软件项目过程中的技术支持者,可以事先为学生准备相关的技术文档。当然如果有的技术学生比较陌生或者比较难掌握,教师就应该对这部分知识进行有针对性地高效地讲解,不求全面,只需将重点放在与项目相关性较高的内容上。这里最好采用"任务驱动"教学模式,即将需要掌握的知识点组织成一个个实验任务,让学生在完成实验任务的过程中掌握知识,这样有助于提高学生的学习兴趣和主动性。 3.3项目设计与实现 这一过程是整个"项目驱动"教学的核心阶段,也是体现前面知识准备成果的阶段,更是学生自主学习、独立解决问题并积累开发经验的关键阶段。 在这一阶段,因为学生普遍缺乏项目开发的实战经验,故需要教师首先引导学生并与学生一起完成项目的分析和概要设计,给出项目的概念模型并组织成文档,作为将来学生自主完成开发的依据。 接下来是学生进行自由分组。分组原则是"自愿、协作、高效"。教师进行适当人员协调。 然后以开发小组为单位,学生运用已学的软件工程、数据库原理等知识对系统进行详细设计,并由教师对每个小组的详细设计方案进行评价,综合各小组方案的意见得到项目的物理模型。 最后就是各功能模块的实现,由学生独立完成。当然,可以视项目规模适当地将项目模块分配到开发小组。如果项目具有一定的难度,还可以由教师详细指导学生去完成一个典型模块。 3.4项目评价与考核 最终的项目评价可以和课程的考核结合起来,项目评价分数作为课程成绩的一部分。而项目的评价需要考查项目最终的功能、界面及文档这几个方面,其中项目的功能是考查的重点,可以分配较高比例的分值。 项目的评价具有一定的主观性,特别是像界面设计部分。因此教师应该有一个尽量详细的统一评分标准,并事先公布出来。这样才能做到公平公正。 |